iT邦幫忙

2024 iThome 鐵人賽

DAY 7
1

目錄

摘要

在上一篇我們學到了Github Actions的變數、變數的scope,以及如何使用GITHUB_ENV、GITHUB_OUTPUT在job、step之間傳遞資料

在這篇我們會來了解一下Github Actions的context

context是什麼

context 是一種物件,透過它可以取得 workflow、變數、runner...等的資訊

當job被送到runner執行時,就可以透過github context 和 runner context取用存在於runner的預設環境變數

取用方式為${{context名.屬性}}${{ github.job.needs.set-style.outputs.primary-color}} 就是一個例子,不過沒寫github.job也可以使用needs context,所以基本上都會省略

在不同的 workflow 下,context 的內容會有極大的不同,例如matrix context 只存在於 matrix 內的 job

常用的context

github

github context存了workflow和trigger event的資訊

{
  "token": "***", // auth token
  "repository": "tempura327/hello-world", // repo名
  "event_name": "input", // workflow觸發事件
  "workflow": "Context testing", // workflow名
  "job": "print out something", // job名
  "event": {
    "input": {
      //... 
    },
  },
  "ref": "refs/heads/my_branch", // ref為分支或tag或其他視觸發事件的類型而定
  "ref_type": "branch", // ref的種類
  "ref_name": "my_branch", // 分支名
}

steps

使用step id可以取得某個step內的資訊

{
  "<step1 id>": {
    "outputs": {
      // 寫入GITHUB_OUTPUT的值
    },
    "outcome": "success", // step的結果
    "conclusion": "success" // step的結果
  },
}

secret

自訂的token

{
  "github_token": "***", // 自動產生給workflow的token,使用某一些牽涉到授權的action時會需要提供
  "NPM_TOKEN": "***",
  // 其他自訂的token
}

needs

使用job id可以取得其他job內的資訊

{
  "<job1 id>": {
    "result": "success", // job的結果
    "outputs": {
      // 在job內的step寫入GITHUB_OUTPUT的值
    }
  }
}

inputs

輸入給workflow、action的值

手動trigger時給予input

// 以上圖舉例
{
  "branch": "main",
  "log_level": "warning",
  "environment":"github-pages"
}

event

使用event context可以查看workflow觸發事件的資訊,關於觸發事件會在後面的篇章詳細說明

{
  "ref": "refs/heads/my_branch", // ref為分支或tag或其他,視觸發事件的類型而定
  "number": 123, // PR或issue編號,視觸發事件的類型而定
  "repository": "tempura327/hello-world", // repo名
  // 以下三種視觸發事件的類型而定
  "issue": {
    "title": "test issue", // issue標題
    "label": "Good first taken", // label
    "comments": 10 // 留言數
    // ...
  },
  "pull_request":{
    "merged": true, 
    "head":{
      "sha":"feoe15w33q" // 取得HEAD的commit sha
    }
    // ...
  },
  "review": {
    "state": "approved" // PR的review狀況
    // ...
  },
}

上一篇
Day 06 - GitHub Actions的變數
下一篇
Day 08 - 儲存敏感資訊的secret
系列文
菜逼八用Github Actions30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言